package com.leonzhangxf.guice.bill;

import com.leonzhangxf.guice.bill.domain.ChargeResult;
import com.leonzhangxf.guice.bill.domain.CreditCard;

/**
 * The credit card processor interface.
 * <p>
 * Should with the ability to charge.
 *
 * @author leonzhangxf
 */
public interface CreditCardProcessor {

    /**
     *
     * @param creditCard
     * @param amount
     * @return
     * @throws UnreachableException
     */
    ChargeResult charge(CreditCard creditCard, Integer amount) throws UnreachableException;
}
